package br.edu.senai.controller;

import br.edu.senai.model.Cliente;
import br.edu.senai.model.Parametro;
import java.util.List;
import javax.persistence.Query;

/**
 * @author william.chenta
 */
public class ParametroDAO {

    private final Conexao conexao = new Conexao();

    public void salvar(Parametro p) {
        if (p.getId() == null) {
            conexao.persist(p);
        } else {
            conexao.alterar(p);
        }
    }

    public void remover(Parametro p) {
        conexao.excluir(p);
    }

    public List<Parametro> listar() {
        conexao.conectar();
        Query q = conexao.getEm().createQuery("select p from tb_parametro p");
        List<Parametro> lParametro = q.getResultList();
        conexao.desconectar();
        return lParametro;
    }

    public List<Parametro> listar(Cliente cli) {
        if (cli.getId() != null) {
            conexao.conectar();
            Query q = conexao.getEm().createQuery("select p from tb_parametro p where p.clientes IN :clienteSel");
            q.setParameter("clienteSel", cli);
            List<Parametro> lParametro = q.getResultList();
            conexao.desconectar();
            return lParametro;
        }
        return null;
    }

    public List<Parametro> listar(int filtroPor, String criterioPesq) {
        conexao.conectar();
        String query = "";

        if (filtroPor == 1) {
            //por nome
            query = "select p from tb_parametro p where p.nome like '%" + criterioPesq + "%'";
        }

        if (filtroPor == 2) {
            //por email
            query = "select p from tb_parametro p where p.unidadeMedida like '%" + criterioPesq + "%'";
        }

        Query q = conexao.getEm().createQuery(query);
        List<Parametro> lParametro = q.getResultList();
        conexao.desconectar();
        return lParametro;
    }

    public Parametro find(Long id) {
        conexao.conectar();
        Parametro p = conexao.getEm().find(Parametro.class, id);
        conexao.desconectar();
        return p;
    }
}
